package org.example.orders.exception;

import org.example.orders.entity.User;
import org.example.orders.feign.MyFeign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;

import java.io.Serializable;
import java.sql.SQLOutput;

@Component
public class MyFeignFallBack implements FallbackFactory<MyFeign> {

    @Override
    public MyFeign create(Throwable cause) {
       return new MyFeign(){

           /* @Autowired
            private User user
            不注入是因为这里不需要复杂依赖，临时构造最简单 ;
            因为这里是 “异常兜底” 的瞬间，
            目的是快速构造一个简单的 Product 作为 “降级响应”，
            不需要复杂的依赖注入（注入更多是为了复用已有的 Bean 逻辑，而这里是临时构造简单对象）。
            直接 new 是最简单、直接的方式，快速生成一个包含 “降级提示” 的 Product 给上游。

            */
            @Override
            public User getById(Serializable id) {
                System.out.println("远程调用失败了，这是我的兜底方案");
                User user = new User();
                user.setUsername("亲，这是提示，这个服务不能用哦~");
                return user;
            }
        };
    }
}
